﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class profesor_form : System.Web.UI.Page
{
    string cadenaError = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if ((Academia.Entidades.Usuario.RolUsuario)Session["rol"] !=
                    Academia.Entidades.Usuario.RolUsuario.Administrador)
            {
                Page.Response.Redirect("MenuAlumno.aspx");
            }
        }

        catch
        {
            Page.Response.Redirect("Login.aspx");
        }

        if (!Page.IsPostBack)
        {
            ddlActivo.Items.Insert(0, new ListItem("Si", "1"));
            ddlActivo.Items.Insert(1, new ListItem("No", "0"));

            ddlTipoDocumento.Items.Insert(0, new ListItem("DNI", "DNI"));
            ddlTipoDocumento.Items.Insert(1, new ListItem("LC", "LC"));
            ddlTipoDocumento.Items.Insert(2, new ListItem("LE", "LE"));
            ddlTipoDocumento.Items.Insert(3, new ListItem("CI", "LE"));
            ddlTipoDocumento.Items.Insert(4, new ListItem("Pasaporte", "Pasaporte"));

            cargarDiasCalendario();

            if (Request.QueryString["legajo"] != null)
            {
                this.panelContrasenia.Visible = false;
                this.lblTitulo.Text = "Modificar Profesor";
                this.btnGuardar.Text = "Modificar";
                cargarDatosUsuario(int.Parse(Request.QueryString["legajo"]));
            }
        }
    }

    private void cargarDatosUsuario(int idUsuario)
    {
        Academia.Negocio.Profesores oNegocio = new Academia.Negocio.Profesores();
        Academia.Entidades.Profesor oProfesor = oNegocio.RecuperarUno(idUsuario)[0];
        this.txtAñoNacimiento.Text = Convert.ToDateTime(oProfesor.FechaNacimiento).Year.ToString();
        this.txtApellido.Text = oProfesor.Apellido;
        this.txtCelular.Text = oProfesor.TelefonoCelular;
        this.txtDireccion.Text = oProfesor.Direccion;
        this.txtEmail.Text = oProfesor.Email;
        this.txtNombre.Text = oProfesor.Nombre;
        this.txtNroDocumento.Text = oProfesor.NroDoc.ToString();
        this.txtTelefono.Text = oProfesor.TelefonoFijo;
        this.ddlTipoDocumento.SelectedValue = oProfesor.TipoDoc;
        this.ddlDiaFechaNacimiento.SelectedIndex = Convert.ToDateTime(oProfesor.FechaNacimiento).Day - 1;
        this.ddlMesFechaNacimiento.SelectedIndex = Convert.ToDateTime(oProfesor.FechaNacimiento).Month - 1;
        this.ddlDiaFechaInicio.SelectedIndex = Convert.ToDateTime(oProfesor.FechaInicio).Day - 1;
        this.ddlMesFechaInicio.SelectedIndex = Convert.ToDateTime(oProfesor.FechaInicio).Month - 1;
        this.txtAñoInicio.Text = Convert.ToDateTime(oProfesor.FechaInicio).Year.ToString();
        this.txtTitulo.Text = oProfesor.Titulo.ToString();
        this.ddlActivo.SelectedValue = oProfesor.Activo.ToString();
        oProfesor = null;
    }

    private void cargarDiasCalendario()
    {
        //Cargar en el combo los items correspondientes a los días
        //(del 1 al 31)
        for (int i = 1; i <= 31; i++)
        {
            if (i < 10)
            {
                this.ddlDiaFechaNacimiento.Items.Add("0" + i.ToString());
                this.ddlDiaFechaInicio.Items.Add("0" + i.ToString());
            }
            else
            {
                this.ddlDiaFechaNacimiento.Items.Add(i.ToString());
                this.ddlDiaFechaInicio.Items.Add(i.ToString());
            }
        }
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (profesorValido())
        {
            Academia.Entidades.Profesor oProfesor = new Academia.Entidades.Profesor();
            oProfesor.Apellido = this.txtApellido.Text;
            oProfesor.TelefonoCelular = this.txtCelular.Text;
            oProfesor.Direccion = this.txtDireccion.Text;
            oProfesor.Email = this.txtEmail.Text;
            oProfesor.FechaNacimiento = new DateTime(int.Parse(this.txtAñoNacimiento.Text),
                                             this.ddlMesFechaNacimiento.SelectedIndex + 1,
                                             this.ddlDiaFechaNacimiento.SelectedIndex + 1);
            oProfesor.Nombre = this.txtNombre.Text;
            oProfesor.NroDoc = int.Parse(this.txtNroDocumento.Text);
            oProfesor.TelefonoFijo = this.txtTelefono.Text;
            oProfesor.TipoDoc = this.ddlTipoDocumento.SelectedValue;
            oProfesor.FechaInicio = new DateTime(int.Parse(this.txtAñoNacimiento.Text),
                                             this.ddlMesFechaInicio.SelectedIndex + 1,
                                             this.ddlDiaFechaInicio.SelectedIndex + 1);
            oProfesor.Titulo = this.txtTitulo.Text;
            oProfesor.Activo = (this.ddlActivo.SelectedValue).Equals("1")? true:false;
            if (Request.QueryString["legajo"] == null)
            {
                oProfesor.usuario = new Academia.Entidades.Usuario();
                oProfesor.usuario.NombreUsuario = txtNomUsuario.Text;
                oProfesor.usuario.Password = txtContraseña.Text;
                oProfesor.usuario.Rol = Academia.Entidades.Usuario.RolUsuario.Usuario;

                new Academia.Negocio.Profesores().Agregar(oProfesor);
            }
            else
            {
                oProfesor.Legajo = int.Parse(Request.QueryString["legajo"]);
                new Academia.Negocio.Profesores().Modificar(oProfesor);
            }
            oProfesor = null;

            Page.Response.Redirect("abm_profesores.aspx?exito=1");

        }
        else
        {
            HtmlGenericControl body = this.Master.FindControl("bodytag") as HtmlGenericControl;
            body.Attributes.Add("onLoad", "alert('" + this.cadenaError + "');");
        }
        
    }

    private bool profesorValido()
    {
        bool valido = true;

        if (!Academia.Utilidades.Validaciones.validarAlfabetico(this.txtApellido.Text))
        {
            valido = false;
            this.txtApellido.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El apellido ingresado no es alfabético" + "\\n";
        }
        else
        {
            this.txtApellido.BackColor = System.Drawing.Color.White;
        }

        if (!Academia.Utilidades.Validaciones.validarAlfabetico(this.txtNombre.Text))
        {
            valido = false;
            this.txtNombre.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El nombre ingresado no es alfabético" + "\\n";
        }

        else
        {
            this.txtNombre.BackColor = System.Drawing.Color.White;
        }


        if (!Academia.Utilidades.Validaciones.validarDNI(this.txtNroDocumento.Text))
        {
            valido = false;
            this.txtNroDocumento.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El DNI ingresado posée formato incorrecto" + "\\n";
        }

        else
        {
            this.txtNroDocumento.BackColor = System.Drawing.Color.White;
        }

        if (!Academia.Utilidades.Validaciones.validarAño(this.txtAñoNacimiento.Text))
        {
            valido = false;
            this.txtAñoNacimiento.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El año de nacimiento ingresado está fuera del rango permitido" + "\\n";
        }
        else
        {
            this.txtAñoNacimiento.BackColor = System.Drawing.Color.White;
        }

        if (!Academia.Utilidades.Validaciones.validarAño(this.txtAñoInicio.Text))
        {
            valido = false;
            this.txtAñoInicio.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El año de inicio ingresado está fuera del rango permitido" + "\\n";
        }
        else
        {
            this.txtAñoInicio.BackColor = System.Drawing.Color.White;
        }

        if (this.txtDireccion.Text == "")
        {
            valido = false;
            this.txtDireccion.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El campo dirección no puede estar vacío" + "\\n";
        }

        else
        {
            this.txtDireccion.BackColor = System.Drawing.Color.White;
        }


        if (this.txtTelefono.Text == "")
        {
            valido = false;
            this.txtTelefono.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El campo teléfono no puede estar vacío" + "\\n";
        }
        else
        {
            this.txtTelefono.BackColor = System.Drawing.Color.White;
        }


        if (!Academia.Utilidades.Validaciones.validarEmail(this.txtEmail.Text))
        {
            valido = false;
            this.txtEmail.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El e-mail ingresado posée formato incorrecto" + "\\n";
        }
        else
        {
            this.txtEmail.BackColor = System.Drawing.Color.White;
        }

        if (Request.QueryString["legajo"] == null)
        {
            if ((this.txtContraseña.Text != this.txtRepetirContraseña.Text) ||
                (this.txtContraseña.Text.Length < 5))
            {
                valido = false;
                this.txtContraseña.BackColor = System.Drawing.Color.Red;
                this.txtRepetirContraseña.BackColor = System.Drawing.Color.Red;
                if (this.txtContraseña.Text != this.txtRepetirContraseña.Text)
                {
                    cadenaError = cadenaError + "Las contraseñas ingresadas no coinciden" + "\\n";
                }
                else
                {
                    cadenaError = cadenaError + "La contraseña ingresada no posee la longitud adecuada" + "\\n";
                }
            }
            else
            {
                this.txtContraseña.BackColor = System.Drawing.Color.White;
                this.txtRepetirContraseña.BackColor = System.Drawing.Color.White;
            }

            Academia.Negocio.Usuarios oNegocio = new Academia.Negocio.Usuarios();

            try
            {
                Academia.Entidades.Usuarios oUsuarios = oNegocio.UsuariosRecuperarUno(txtNomUsuario.Text);
                if ((oUsuarios.Count != 0) || (this.txtNomUsuario.Text == ""))
                {
                    valido = false;
                    this.txtNomUsuario.BackColor = System.Drawing.Color.Red;
                    if (this.txtNomUsuario.Text == "")
                    {
                        cadenaError = cadenaError + "El campo nombre de usuario no puede estar vacío" + "\\n";
                    }
                    else
                    {
                        cadenaError = cadenaError + "El nombre de usuario ingresado ya está siendo utilizado" + "\\n";
                    }
                }
                else
                {
                    this.txtNomUsuario.BackColor = System.Drawing.Color.White;
                }

                oUsuarios = null;
            }
            catch
            {
                valido = false;
                this.txtNomUsuario.BackColor = System.Drawing.Color.Red;
            }
            finally
            {

                oNegocio = null;
            }
        }

        try
        {
            valido = Academia.Utilidades.Validaciones.validarFecha(int.Parse(this.txtAñoNacimiento.Text),
                this.ddlMesFechaNacimiento.SelectedIndex + 1, this.ddlDiaFechaNacimiento.SelectedIndex + 1);
        }
        catch
        {
            valido = false;
        }

        if (valido)
        {
            this.ddlDiaFechaNacimiento.BackColor = System.Drawing.Color.White;
            this.ddlMesFechaNacimiento.BackColor = System.Drawing.Color.White;
        }
        else
        {
            this.ddlDiaFechaNacimiento.BackColor = System.Drawing.Color.Red;
            this.ddlMesFechaNacimiento.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "La fecha de nacimiento ingresada tiene formato inválido" + "\\n";
        }
        return valido;
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Page.Response.Redirect("abm_profesores.aspx");
    }
    
}
